using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._GeostatisticalAnalystTools._Interpolation
{
    /// <summary>
    /// <para>EBK Regression Prediction</para>
    /// <para>EBK Regression Prediction is a geostatistical interpolation method that uses Empirical Bayesian Kriging with explanatory variable rasters that are known to affect the value of the data that you are interpolating. This approach combines kriging with regression analysis to make predictions that are more accurate than either regression or kriging can achieve on their own.</para>
    /// <para>EBK 回归预测是一种地统计插值方法，它使用经验贝叶斯克里法和已知会影响插值数据值的解释变量栅格。这种方法将克里金法与回归分析相结合，以做出比回归法或克里金法本身更准确的预测。</para>
    /// </summary>    
    [DisplayName("EBK Regression Prediction")]
    public class EBKRegressionPrediction : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public EBKRegressionPrediction()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_features">
        /// <para>Input dependent variable features</para>
        /// <para>The input point features containing the field that will be interpolated.</para>
        /// <para>包含将要插值的字段的输入点要素。</para>
        /// </param>
        /// <param name="_dependent_field">
        /// <para>Dependent variable field</para>
        /// <para>The field of the Input dependent variable features containing the values of the dependent variable. This is the field that will be interpolated.</para>
        /// <para>包含因变量值的输入因变量要素的字段。这是将要插值的字段。</para>
        /// </param>
        /// <param name="_in_explanatory_rasters">
        /// <para>Input explanatory variable rasters</para>
        /// <para>Input rasters representing the explanatory variables that will be used to build the regression model. These rasters should represent variables that are known to influence the values of the dependent variable. For example, when interpolating temperature data, an elevation raster should be used as an explanatory variable because temperature is influenced by elevation. You can use up to 62 explanatory rasters.</para>
        /// <para>表示将用于构建回归模型的解释变量的输入栅格。这些栅格应表示已知会影响因变量值的变量。例如，在插值温度数据时，应使用高程栅格作为解释变量，因为温度会受到高程的影响。最多可以使用 62 个解释性栅格。</para>
        /// </param>
        /// <param name="_out_ga_layer">
        /// <para>Output geostatistical layer</para>
        /// <para>The output geostatistical layer displaying the result of the interpolation.</para>
        /// <para>显示插值结果的输出地统计图层。</para>
        /// </param>
        public EBKRegressionPrediction(object _in_features, object _dependent_field, List<object> _in_explanatory_rasters, object _out_ga_layer)
        {
            this._in_features = _in_features;
            this._dependent_field = _dependent_field;
            this._in_explanatory_rasters = _in_explanatory_rasters;
            this._out_ga_layer = _out_ga_layer;
        }
        public override string ToolboxName => "Geostatistical Analyst Tools";

        public override string ToolName => "EBK Regression Prediction";

        public override string CallName => "ga.EBKRegressionPrediction";

        public override List<string> AcceptEnvironments => ["cellSize", "coincidentPoints", "extent", "geographicTransformations", "mask", "outputCoordinateSystem", "parallelProcessingFactor", "scratchWorkspace", "snapRaster", "workspace"];

        public override object[] ParameterInfo => [_in_features, _dependent_field, _in_explanatory_rasters, _out_ga_layer, _out_raster, _out_diagnostic_feature_class, _measurement_error_field, _min_cumulative_variance, _in_subset_features, _transformation_type.GetGPValue(), _semivariogram_model_type.GetGPValue(), _max_local_points, _overlap_factor, _number_simulations, _search_neighborhood];

        /// <summary>
        /// <para>Input dependent variable features</para>
        /// <para>The input point features containing the field that will be interpolated.</para>
        /// <para>包含将要插值的字段的输入点要素。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input dependent variable features")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_features { get; set; }


        /// <summary>
        /// <para>Dependent variable field</para>
        /// <para>The field of the Input dependent variable features containing the values of the dependent variable. This is the field that will be interpolated.</para>
        /// <para>包含因变量值的输入因变量要素的字段。这是将要插值的字段。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Dependent variable field")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _dependent_field { get; set; }


        /// <summary>
        /// <para>Input explanatory variable rasters</para>
        /// <para>Input rasters representing the explanatory variables that will be used to build the regression model. These rasters should represent variables that are known to influence the values of the dependent variable. For example, when interpolating temperature data, an elevation raster should be used as an explanatory variable because temperature is influenced by elevation. You can use up to 62 explanatory rasters.</para>
        /// <para>表示将用于构建回归模型的解释变量的输入栅格。这些栅格应表示已知会影响因变量值的变量。例如，在插值温度数据时，应使用高程栅格作为解释变量，因为温度会受到高程的影响。最多可以使用 62 个解释性栅格。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input explanatory variable rasters")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public List<object> _in_explanatory_rasters { get; set; }


        /// <summary>
        /// <para>Output geostatistical layer</para>
        /// <para>The output geostatistical layer displaying the result of the interpolation.</para>
        /// <para>显示插值结果的输出地统计图层。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output geostatistical layer")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _out_ga_layer { get; set; }


        /// <summary>
        /// <para>Output prediction raster</para>
        /// <para>The output raster displaying the result of the interpolation. The default cell size will be the maximum of the cell sizes of the Input explanatory variable rasters. To use a different cell size, use the cell size environmental setting.</para>
        /// <para>显示插值结果的输出栅格。默认像元大小将为输入解释变量栅格的像元最大像元大小。要使用不同的单元格大小，请使用单元格大小环境设置。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output prediction raster")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _out_raster { get; set; } = null;


        /// <summary>
        /// <para>Output diagnostic feature class</para>
        /// <para><xdoc>
        ///   <para>Output polygon feature class that shows the regions of each local model and contains fields with diagnostic information for the local models. For each subset, a polygon will be created that surrounds the points in the subset so you can easily identify which points were used in each subset. For example, if there are 10 local models, there will be ten polygons in this output. The feature class will contain the following fields:</para>
        ///   <bulletList>
        ///     <bullet_item>Number of Principal Components (PrincComps)—The number of principal components that were used as explanatory variables. The value will always be less than or equal to the number of explanatory variable rasters.</bullet_item><para/>
        ///     <bullet_item>Percent of Variance (PercVar)—The percent of variance captured by the principal components. This value will be greater than or equal to the value specified in the Minimum cumulative percent of variance parameter below.</bullet_item><para/>
        ///     <bullet_item>Root Mean Square Error (RMSE)—The square root of the average squared cross-validation errors. The smaller this value, the better the model fits.</bullet_item><para/>
        ///     <bullet_item>Percent 90 Interval (Perc90)—The percent of data points that fall within a 90 percent cross-validation confidence interval. Ideally, this number should be close to 90. A value significantly smaller than 90 indicates that standard errors are being underestimated. A value significantly larger than 90 indicates that standard errors are being overestimated.</bullet_item><para/>
        ///     <bullet_item>Percent 95 Interval (Perc95)—The percent of data points that fall within a 95 percent cross-validation confidence interval. Ideally, this number should be close to 95. A value significantly smaller than 95 indicates that standard errors are being underestimated. A value significantly larger than 95 indicates that standard errors are being overestimated.</bullet_item><para/>
        ///     <bullet_item>Mean Absolute Error (MeanAbsErr)—The average of the absolute values of the cross-validation errors. This value should be as small as possible. It is similar to Root Mean Square Error, but it is less influenced by extreme values.</bullet_item><para/>
        ///     <bullet_item>Mean Error (MeanError)—The average of the cross-validation errors. This value should be close to zero. A value significantly different than zero indicates that the predictions are biased.</bullet_item><para/>
        ///     <bullet_item>Continuous Ranked Probability Score (CRPS)—The continuous ranked probability score is a diagnostic that measures the deviation from the predictive cumulative distribution function to each observed data value. This value should be as small as possible. This diagnostic has advantages over cross-validation diagnostics because it compares the data to a full distribution rather than to single-point predictions.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>输出面要素类，用于显示每个局部模型的区域，并包含包含局部模型诊断信息的字段。对于每个子集，将创建一个围绕子集中的点的多边形，以便您可以轻松识别每个子集中使用了哪些点。例如，如果有 10 个局部模型，则此输出中将有 10 个多边形。要素类将包含以下字段：</para>
        ///   <bulletList>
        ///     <bullet_item>主成分数 （PrincComps） - 用作解释变量的主成分数。该值将始终小于或等于解释变量栅格的数量。</bullet_item><para/>
        ///     <bullet_item>方差百分比 （PercVar） - 主成分捕获的方差百分比。此值将大于或等于下面的最小累积方差百分比参数中指定的值。</bullet_item><para/>
        ///     <bullet_item>均方根误差 （RMSE） - 平均平方交叉验证误差的平方根。此值越小，模型拟合越好。</bullet_item><para/>
        ///     <bullet_item>90 区间百分比 （Perc90） - 位于 90% 交叉验证置信区间内的数据点的百分比。理想情况下，这个数字应该接近 90。明显小于 90 的值表示标准误差被低估了。如果值明显大于 90，则表示标准误差被高估了。</bullet_item><para/>
        ///     <bullet_item>百分比 95 区间 （Perc95） - 位于 95% 交叉验证置信区间内的数据点的百分比。理想情况下，这个数字应该接近 95。明显小于 95 的值表示标准误差被低估了。如果值明显大于 95，则表示高估了标准误差。</bullet_item><para/>
        ///     <bullet_item>平均绝对误差 （MeanAbsErr） - 交叉验证误差的绝对值的平均值。此值应尽可能小。它类似于均方根误差，但受极值的影响较小。</bullet_item><para/>
        ///     <bullet_item>平均误差 （MeanError） - 交叉验证误差的平均值。此值应接近于零。与零显著不同的值表示预测存在偏差。</bullet_item><para/>
        ///     <bullet_item>连续排名概率得分 （CRPS） - 连续排名概率得分是一种诊断方法，用于测量预测累积分布函数与每个观测数据值的偏差。此值应尽可能小。与交叉验证诊断相比，此诊断具有优势，因为它将数据与完整分布进行比较，而不是与单点预测进行比较。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output diagnostic feature class")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _out_diagnostic_feature_class { get; set; } = null;


        /// <summary>
        /// <para>Dependent variable measurement error field</para>
        /// <para><xdoc>
        ///   <para>A field that specifies the measurement error for each point in the dependent variable features. For each point, the value of this field should correspond to one standard deviation of the measured value of the point. Use this field if the measurement error values are not the same at each point.</para>
        ///   <para>A common source of nonconstant measurement error is when the data is measured with different devices. One device might be more precise than another, which means that it will have a smaller measurement error. For example, one thermometer rounds to the nearest degree and another thermometer rounds to the nearest tenth of a degree. The variability of measurements is often provided by the manufacturer of the measuring device, or it may be known from empirical practice.</para>
        ///   <para>Leave this parameter empty if there are no measurement error values or the measurement error values are unknown.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定因变量要素中每个点的测量误差的字段。对于每个点，此字段的值应对应于该点测量值的一个标准差。如果每个点的测量误差值都不相同，请使用此字段。</para>
        ///   <para>非恒定测量误差的一个常见来源是使用不同的设备测量数据。一个设备可能比另一个设备更精确，这意味着它的测量误差更小。例如，一个温度计四舍五入到最接近的度数，另一个温度计四舍五入到最接近的十分之一度。测量的可变性通常由测量设备的制造商提供，或者可以从经验实践中知道。</para>
        ///   <para>如果没有测量误差值或测量误差值未知，则将此参数留空。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Dependent variable measurement error field")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _measurement_error_field { get; set; } = null;


        /// <summary>
        /// <para>Minimum cumulative percent of variance</para>
        /// <para><xdoc>
        ///   <para>Defines the minimum cumulative percent of variance from the principal components of the explanatory variable rasters. Before building the regression model, the principal components of the explanatory variables are calculated, and these principal components are used as explanatory variables in the regression. Each principal component captures a certain percent of the variance of the explanatory variables, and this parameter controls the minimum percent of variance that must be captured by the principal components of each local model. For example, if a value of 75 is provided, the software will use the minimum number of principal components that are necessary to capture at least 75 percent of the variance of the explanatory variables.</para>
        ///   <para>Principal components are all mutually uncorrelated with each other, so using principal components solves the problem of multicollinearity (explanatory variables that are correlated with each other). Most of the information contained in all explanatory variables can frequently be captured in just a few principal components. By discarding the least useful principal components, the model calculation becomes more stable and efficient without significant loss of accuracy.</para>
        ///   <para>To calculate principal components, there must be variability in the explanatory variables, so if any of your Input explanatory variable rasters contain constant values within a subset, these constant rasters will not be used to compute principal components for that subset. If all explanatory variable rasters in a subset contain constant values, the Output diagnostic feature class will report that zero principal components were used and that they captured zero percent of the variability.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>定义解释变量栅格主成分的最小累积方差百分比。在构建回归模型之前，先计算解释变量的主成分，并将这些主成分用作回归中的解释变量。每个主成分捕获解释变量方差的一定百分比，此参数控制每个局部模型的主成分必须捕获的最小方差百分比。例如，如果提供的值为 75，则软件将使用捕获至少 75% 的解释变量方差所需的最小主成分数。</para>
        ///   <para>主成分彼此之间都是互不相关的，因此使用主成分可以解决多重共线性（相互关联的解释变量）问题。所有解释变量中包含的大多数信息通常都可以在几个主要成分中捕获。通过丢弃最无用的主成分，模型计算变得更加稳定和高效，而不会显著降低精度。</para>
        ///   <para>要计算主成分，解释变量必须存在变异性，因此，如果任何输入解释变量栅格在子集中包含常量值，则这些常量栅格将不会用于计算该子集的主成分。如果子集中的所有解释变量栅格都包含常量值，则输出诊断要素类将报告使用了零个主成分，并且它们捕获的变异率为零。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Minimum cumulative percent of variance")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public double _min_cumulative_variance { get; set; } = 95;


        /// <summary>
        /// <para>Subset polygon features</para>
        /// <para><xdoc>
        ///   <para>Polygon features defining where the local models will be calculated. The points inside each polygon will be used for the local models. This parameter is useful when you know that the values of the dependent variable changes according to known regions. For example, these polygons may represent administrative health districts where health policy changes in different districts.</para>
        ///   <para>You can also use the Generate Subset Polygons tool to create subset polygons. The polygons created by this tool will be non-overlapping and compact.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>定义本地模型计算位置的面要素。每个面内的点将用于局部模型。当您知道因变量的值会根据已知区域而变化时，此参数非常有用。例如，这些面可能表示不同地区卫生政策发生变化的行政卫生区。</para>
        ///   <para>您还可以使用生成子集面工具创建子集面。此工具创建的多边形将不重叠且紧凑。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Subset polygon features")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _in_subset_features { get; set; } = null;


        /// <summary>
        /// <para>Dependent variable transformation type</para>
        /// <para><xdoc>
        ///   <para>Type of transformation to be applied to the input data.</para>
        ///   <bulletList>
        ///     <bullet_item>None—Do not apply any transformation. This is the default.</bullet_item><para/>
        ///     <bullet_item>Empirical—Multiplicative Skewing transformation with Empirical base function.</bullet_item><para/>
        ///     <bullet_item>Log empirical—Multiplicative Skewing transformation with Log Empirical base function. All data values must be positive. If this option is chosen, all predictions will be positive.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>要应用于输入数据的转换类型。</para>
        ///   <bulletList>
        ///     <bullet_item>无 （None） - 不应用任何变换。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>经验 （Empirical） - 具有经验基函数的乘法偏变换。</bullet_item><para/>
        ///     <bullet_item>对数经验 （Log Empirical） - 使用对数经验基函数的乘法倾斜变换。所有数据值必须为正数。如果选择此选项，则所有预测都将为正数。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Dependent variable transformation type")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _transformation_type_value _transformation_type { get; set; } = _transformation_type_value._NONE;

        public enum _transformation_type_value
        {
            /// <summary>
            /// <para>None</para>
            /// <para>None—Do not apply any transformation. This is the default.</para>
            /// <para>无 （None） - 不应用任何变换。这是默认设置。</para>
            /// </summary>
            [Description("None")]
            [GPEnumValue("NONE")]
            _NONE,

            /// <summary>
            /// <para>Empirical</para>
            /// <para>Empirical—Multiplicative Skewing transformation with Empirical base function.</para>
            /// <para>经验 （Empirical） - 具有经验基函数的乘法偏变换。</para>
            /// </summary>
            [Description("Empirical")]
            [GPEnumValue("EMPIRICAL")]
            _EMPIRICAL,

            /// <summary>
            /// <para>Log empirical</para>
            /// <para>Log empirical—Multiplicative Skewing transformation with Log Empirical base function. All data values must be positive. If this option is chosen, all predictions will be positive.</para>
            /// <para>对数经验 （Log Empirical） - 使用对数经验基函数的乘法倾斜变换。所有数据值必须为正数。如果选择此选项，则所有预测都将为正数。</para>
            /// </summary>
            [Description("Log empirical")]
            [GPEnumValue("LOGEMPIRICAL")]
            _LOGEMPIRICAL,

        }

        /// <summary>
        /// <para>Semivariogram model type</para>
        /// <para><xdoc>
        ///   <para>The semivariogram model that will be used for the interpolation.</para>
        ///   <bulletList>
        ///     <bullet_item>Exponential—Exponential semivariogram</bullet_item><para/>
        ///     <bullet_item>Nugget—Nugget semivariogram</bullet_item><para/>
        ///     <bullet_item>Whittle—Whittle semivariogram</bullet_item><para/>
        ///     <bullet_item>K-Bessel—K-Bessel semivariogram</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>将用于插值的半变异函数模型。</para>
        ///   <bulletList>
        ///     <bullet_item>指数 - 指数半变异函数</bullet_item><para/>
        ///     <bullet_item>Nugget - Nugget 半变异函数</bullet_item><para/>
        ///     <bullet_item>Whittle—Whittle 半变异函数</bullet_item><para/>
        ///     <bullet_item>K-贝塞尔—K-贝塞尔半变异函数</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Semivariogram model type")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _semivariogram_model_type_value _semivariogram_model_type { get; set; } = _semivariogram_model_type_value._EXPONENTIAL;

        public enum _semivariogram_model_type_value
        {
            /// <summary>
            /// <para>Exponential</para>
            /// <para>Exponential—Exponential semivariogram</para>
            /// <para>指数 - 指数半变异函数</para>
            /// </summary>
            [Description("Exponential")]
            [GPEnumValue("EXPONENTIAL")]
            _EXPONENTIAL,

            /// <summary>
            /// <para>Nugget</para>
            /// <para>Nugget—Nugget semivariogram</para>
            /// <para>Nugget - Nugget 半变异函数</para>
            /// </summary>
            [Description("Nugget")]
            [GPEnumValue("NUGGET")]
            _NUGGET,

            /// <summary>
            /// <para>Whittle</para>
            /// <para>Whittle—Whittle semivariogram</para>
            /// <para>Whittle—Whittle 半变异函数</para>
            /// </summary>
            [Description("Whittle")]
            [GPEnumValue("WHITTLE")]
            _WHITTLE,

            /// <summary>
            /// <para>K-Bessel</para>
            /// <para>K-Bessel—K-Bessel semivariogram</para>
            /// <para>K-贝塞尔—K-贝塞尔半变异函数</para>
            /// </summary>
            [Description("K-Bessel")]
            [GPEnumValue("K_BESSEL")]
            _K_BESSEL,

        }

        /// <summary>
        /// <para>Maximum number of points in each local model</para>
        /// <para>The input data will automatically be divided into subsets that do not have more than this number of points. If Subset polygon features are supplied, the value of this parameter will be ignored.</para>
        /// <para>输入数据将自动划分为不超过此点数的子集。如果提供了子集面要素，则将忽略此参数的值。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Maximum number of points in each local model")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public long _max_local_points { get; set; } = 100;


        /// <summary>
        /// <para>Local model area overlap factor</para>
        /// <para>A factor representing the degree of overlap between local models (also called subsets). Each input point can fall into several subsets, and the overlap factor specifies the average number of subsets that each point will fall into. A high value of the overlap factor makes the output surface smoother, but it also increases processing time. Values must be between 1 and 5. If Subset polygon features are supplied, the value of this parameter will be ignored.</para>
        /// <para>表示局部模型（也称为子集）之间重叠程度的因子。每个输入点可以分为多个子集，重叠因子指定每个点将落入的子集的平均数目。重叠因子的高值使输出表面更平滑，但也增加了处理时间。值必须介于 1 和 5 之间。如果提供了子集面要素，则将忽略此参数的值。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Local model area overlap factor")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public double _overlap_factor { get; set; } = 1;


        /// <summary>
        /// <para>Number of simulations</para>
        /// <para>The number of simulated semivariograms of each local model. Using more simulations will make the model calculations more stable, but the model will take longer to calculate.</para>
        /// <para>每个局部模型的模拟半变异函数数。使用更多的模拟将使模型计算更加稳定，但模型的计算时间更长。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Number of simulations")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public long _number_simulations { get; set; } = 100;


        /// <summary>
        /// <para>Search neighborhood</para>
        /// <para><xdoc>
        ///   <para>Defines which surrounding points will be used to control the output. Standard is the default.</para>
        ///   <para>Standard Circular</para>
        ///   <bulletList>
        ///     <bullet_item>Max neighbors—The maximum number of neighbors that will be used to estimate the value at the unknown location.</bullet_item><para/>
        ///     <bullet_item>Min neighbors—The minimum number of neighbors that will be used to estimate the value at the unknown location.</bullet_item><para/>
        ///     <bullet_item>Sector Type—The geometry of the neighborhood.
        ///     <bulletList>
        ///       <bullet_item>One sector—Single ellipse.  </bullet_item><para/>
        ///       <bullet_item>Four sectors—Ellipse divided into four sectors.  </bullet_item><para/>
        ///       <bullet_item>Four sectors shifted—Ellipse divided into four sectors and shifted 45 degrees.  </bullet_item><para/>
        ///       <bullet_item>Eight sectors—Ellipse divided into eight sectors.  </bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>Angle—The angle of rotation for the axis (circle) or semimajor axis (ellipse) of the moving window.</bullet_item><para/>
        ///     <bullet_item>Radius—The length of the radius of the search circle.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>Smooth Circular</para>
        ///   <bulletList>
        ///     <bullet_item>Smoothing factor—The Smooth Interpolation option creates an outer ellipse and an inner ellipse at a distance equal to the Major Semiaxis multiplied by the Smoothing factor. The points that fall outside the smallest ellipse but inside the largest ellipse are weighted using a sigmoidal function with a value between zero and one.</bullet_item><para/>
        ///     <bullet_item>Radius—The length of the radius of the search circle.</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>定义将用于控制输出的周围点。标准是默认值。</para>
        ///   <para>标准通函</para>
        ///   <bulletList>
        ///     <bullet_item>最大邻居数 - 将用于估计未知位置值的最大邻居数。</bullet_item><para/>
        ///     <bullet_item>最小邻居 - 将用于估计未知位置的值的最小邻居数。</bullet_item><para/>
        /// <bullet_item>扇区类型 - 邻域的几何。
        ///     <bulletList>
        ///       <bullet_item>一个扇区 - 单个椭圆。</bullet_item><para/>
        ///       <bullet_item>四个扇区 - 椭圆分为四个扇区。</bullet_item><para/>
        ///       <bullet_item>四个扇区移动 - 椭圆分为四个扇区并移动 45 度。</bullet_item><para/>
        ///       <bullet_item>八个扇区 - 椭圆分为八个扇区。</bullet_item><para/>
        ///     </bulletList>
        ///     </bullet_item><para/>
        ///     <bullet_item>角度 （Angle） - 移动窗口的轴（圆）或半长轴（椭圆）的旋转角度。</bullet_item><para/>
        ///     <bullet_item>半径 - 搜索圆半径的长度。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>光滑的圆形</para>
        ///   <bulletList>
        ///     <bullet_item>平滑因子 - “平滑插值”（Smooth Interpolation） 选项在距离等于“主半轴”乘以“平滑因子”（Smoothing factor） 的距离处创建外椭圆和内椭圆。对于位于最小椭圆之外但在最大椭圆内的点，使用值介于 0 和 1 之间的 S 形函数进行加权。</bullet_item><para/>
        ///     <bullet_item>半径 - 搜索圆半径的长度。</bullet_item><para/>
        ///   </bulletList>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Search neighborhood")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _search_neighborhood { get; set; } = null;


        public EBKRegressionPrediction SetEnv(object cellSize = null, object coincidentPoints = null, object extent = null, object geographicTransformations = null, object mask = null, object outputCoordinateSystem = null, object parallelProcessingFactor = null, object scratchWorkspace = null, object snapRaster = null, object workspace = null)
        {
            base.SetEnv(cellSize: cellSize, coincidentPoints: coincidentPoints, extent: extent, geographicTransformations: geographicTransformations, mask: mask, outputCoordinateSystem: outputCoordinateSystem, parallelProcessingFactor: parallelProcessingFactor, scratchWorkspace: scratchWorkspace, snapRaster: snapRaster, workspace: workspace);
            return this;
        }

    }

}